package com.shujia.wyh.java_moni_hadoop;

import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//模拟hadoop中每一个block块都会产生一个map任务，注意，这里仅仅是模拟，和真正的hadoop产生map任务的过程有所差距
//真正的hadoop中map任务生成会将倒数第二个与最后一个block块组合起来看一看大小，如果组合大小是小于128*1.1的，就产生一个map任务，
//否则一个block块对应一个map任务
//对于我们这里模拟就一个block块产生一个map任务，暂时不考虑128*1.1的溢出
public class Map {
    public static void main(String[] args) {
        //由于是多个block块，就应该使用多个线程来进行处理
        //使用线程池
        ExecutorService pool = Executors.newFixedThreadPool(8);
        //将bigdata23-hadoop/data/blocks进行封装
        File file = new File("bigdata23-hadoop/data/blocks");
        //获取该目录下的所有文件
        File[] files = file.listFiles();
        //定义一个变量，表示读取到的是第几个block块
        int index = 0;

        for (File file1 : files) {
            pool.submit(new MyMap(file1,index));
            index++;
        }

        pool.shutdown();
    }
}
